package com.tamecode.chapter07.sec2.proxy.jdk;

import com.tamecode.chapter07.sec2.ForumService;

import java.lang.reflect.Proxy;

public class ForumServiceTest {

    public static void main(String[] args) {
        ForumService target = new ForumServiceImpl(); //① 希望被代理的目标业务类
        PerformanceHandler handler = new PerformanceHandler(target); //② 将目标业务类和横切代码编织到一起
        ForumService proxy = (ForumService) Proxy.newProxyInstance( //③ 根据编织了目标业务类逻辑和性能监视横切逻辑的 InvocationHandler 实例创建代理实例
                target.getClass().getClassLoader(),
                target.getClass().getInterfaces(),
                handler);
        proxy.removeForum(10); //④ 调用代理实例
        proxy.removeTopic(1012);
    }
    /*
    begin monitor...
    模拟删除Forum记录:10
    end monitor...
    com.tamecode.chapter07.sec2.proxy.jdk.ForumServiceImpl.removeForum花费48毫秒。
    begin monitor...
    模拟删除Topic记录:1012
    end monitor...
    com.tamecode.chapter07.sec2.proxy.jdk.ForumServiceImpl.removeTopic花费32毫秒。
     */
}